형태소 분석을 통한 TF-IDF 벡터 만들기


In [2]:
from konlpy.tag import Twitter
import pandas as pd

# 연합뉴스 로딩
kor_corpus = pd.read_csv(r'한류_연합뉴스.csv', encoding='cp949')

pos_tagger = Twitter()

# 한글 문서 명사만 뽑아서 tf-idf
total_news = []
stopword = ['것','수','저']

for news in kor_corpus['contents'].head():
    pos_news = ['/'.join(t[:-1]) for t in pos_tagger.pos(news) if ((t[1]=='Noun') & (t[0] not in stopword))]
    total_news.append(' '.join(pos_news))

In [3]:
# 데이터 확인
kor_corpus.head()


Out[3]:
time title contents
0 2016/08/09 16:44 에스테틱 미용 시장 개척하는 광주 노아 메디컬 (광주=연합뉴스) 여운창 기자 = 날로 커가는 피부·미용분야의 에스테틱 시장을 개척...
1 2016/08/09 15:37 청소년 노래·춤 경연 'LG드림페스티벌'…총상금 5천만원 (구미=연합뉴스) 박순기 기자 = 노래·춤 경연으로 청소년 꿈과 열정을 키워주는 '...
2 2016/08/09 15:32 고신대병원, 카자흐스탄에 두 번째 거점센터 (부산=연합뉴스) 박창수 기자 = 고신대 복음병원은 카자흐스탄 제2 도시 알마티에 ...
3 2016/08/09 15:19 국제패션문화페스티벌 자원봉사자 모집 (대구=연합뉴스) 한국패션문화산업진흥원은 2016 대구국제패션문화페스티벌 자원봉사...
4 2016/08/09 14:42 "中한류 일정 대부분 정상 진행…좋은 콘텐츠로 다가가야" (세종=연합뉴스) 김영만 기자 = 한국의 고고도 미사일 방어체계(THAAD·사드) ...

In [4]:
kor_corpus['contents'][1]


Out[4]:
"(구미=연합뉴스) 박순기 기자 = 노래·춤 경연으로 청소년 꿈과 열정을 키워주는 '제16회 LG드림페스티벌'이 시작됐다.  LG경북협의회는 내달 4일까지 홈페이지(www.lgcog.co.kr)에서 신청을 받아 9월 10일부터 10월 8일까지 행사를 치른다. 전체기사 본문배너 가요·그룹댄스·국악 등 3개 부문으로 진행해 부분별 대상에 500만원, 금상 300만원, 은상 200만원, 동상 100만원을 수여한다. 총상금은 5천만원이다. LG경북협의회장상과 여성가족부 장관상, 경북도지사상, 경북도교육감상, 구미시장상을 준다. 9세부터 24세까지 누구나 참가할 수 있다. 가요·그룹댄스 부문의 경우 내달 10일 서울지역 예선(서울경향아트힐), 9월 11일 부산지역 예선(부산디자인센터), 9월 24일 구미지역 예선(경운대학교)이 각각 열린다. 10월 1일 본선에서 TOP3 경연팀을 선발한 뒤 10월 8일 구미시민운동장에서 열리는 본 행사에서 대상팀을 선정한다. 국악부문은 9월 25일 구미경운대에서 당일 행사로 진행된다. LG드림페스티벌을 통해 GOD의 김태우, 십센치(10cm)의 권정열, 한류스타 황치열, 팝핀 여제 주민정, 트로트 가수 류원정 등 많은 스타가 발굴됐다고 한다. 자세한 내용은 홈페이지를 참고하거나 사무국(053-381-8071)으로 문의하면 된다."

In [5]:
# total_news list 확인
total_news[1]


Out[5]:
'구미 연합뉴스 박순 기 기자 노래 춤 경연 청소년 꿈 열정 제 회 드림 페스티벌 이 시작 경북 협의 회 내달 일 홈페이지 에서 신청 월 일 월 일 행사 전체 기사 본문 배너 가요 그룹 댄스 국악 등 개 부문 부분 별 대상 만원 금 만원 은상 만원 동상 만원 수여 총상 금은 천만원 경북 협의 회장 여성가족부 장관 경북 도지사 경북 교육감 구미시장 준 세 세 누구 가요 그룹 댄스 부문 경우 내달 일 서울 지역 예선 서울 경향 아트 힐 월 일 부산 지역 예선 부산 디자인 센터 월 일 구미 지역 예선 경운대 학교 이 각각 월 일 본선 경연 팀 선발 뒤 월 일 구미 시민운동 행사 대상 팀 국악 부문 월 일 구미 경운대 당일 행사 드림 페스티벌 통해 의 김태우 십센치 의 권정열 한류 스타 황 치열 팝핀 여제 주민 정 트로트 가수 류 원정 등 스타 발굴 내용 홈페이지 사무국 문의'

In [6]:
# tf-idf 벡터 만들기
from sklearn.feature_extraction.text import CountVectorizer

kor_vectorizer = CountVectorizer(min_df=1) # 등장하는 단어들에 대한 오브젝트
kor_bow = kor_vectorizer.fit_transform(total_news) # 딕셔너리에 실제 단어들을 입력

In [7]:
print(kor_bow)


  (0, 29)	4
  (0, 204)	1
  (0, 199)	1
  (0, 53)	1
  (0, 61)	1
  (0, 333)	1
  (0, 105)	2
  (0, 132)	3
  (0, 196)	6
  (0, 173)	5
  (0, 4)	1
  (0, 282)	4
  (0, 194)	3
  (0, 68)	1
  (0, 66)	3
  (0, 262)	1
  (0, 52)	1
  (0, 348)	3
  (0, 48)	2
  (0, 6)	1
  (0, 175)	1
  (0, 271)	1
  (0, 123)	2
  (0, 226)	1
  (0, 301)	1
  :	:
  (4, 181)	1
  (4, 260)	1
  (4, 30)	1
  (4, 176)	1
  (4, 38)	1
  (4, 193)	1
  (4, 202)	2
  (4, 190)	2
  (4, 133)	1
  (4, 45)	1
  (4, 247)	1
  (4, 249)	1
  (4, 272)	1
  (4, 75)	1
  (4, 305)	1
  (4, 267)	1
  (4, 59)	1
  (4, 306)	1
  (4, 15)	1
  (4, 85)	1
  (4, 22)	1
  (4, 259)	1
  (4, 106)	1
  (4, 77)	1
  (4, 349)	1

In [8]:
print(kor_vectorizer.get_feature_names()[:10])
kor_bow.toarray()


['가수', '가요', '각각', '개정', '개척', '거점', '건강', '검진', '견실', '견지해']
Out[8]:
array([[0, 0, 0, ..., 1, 0, 1],
       [1, 2, 1, ..., 0, 1, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 1, ..., 0, 0, 0]], dtype=int64)

In [9]:
# 생성한 TF-bow를 가지고 tf-idf 생성하기

from sklearn.feature_extraction.text import TfidfTransformer

transformer = TfidfTransformer() # tfidf 변환 인스턴스 생성
tfidf = transformer.fit_transform(kor_bow.toarray())

In [10]:
tfidf.toarray()


Out[10]:
array([[ 0.        ,  0.        ,  0.        , ...,  0.06236855,
         0.        ,  0.06236855],
       [ 0.07572825,  0.1514565 ,  0.06109707, ...,  0.        ,
         0.07572825,  0.        ],
       [ 0.        ,  0.        ,  0.        , ...,  0.        ,
         0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        , ...,  0.        ,
         0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.05084439, ...,  0.        ,
         0.        ,  0.        ]])

In [11]:
# 간단한 예제

ex_text = ["한국 김치 ",
          "한국 미국 FTA FTA ",
          "한국 미국 "]

kor_vectorizer = CountVectorizer(min_df=1)
kor_bow = kor_vectorizer.fit_transform(ex_text)

transformer = TfidfTransformer()
tfidf = transformer.fit_transform(kor_bow.toarray())
print(kor_vectorizer.get_feature_names())
print(kor_bow.toarray())
print(tfidf.toarray())


['fta', '김치', '미국', '한국']
[[0 1 0 1]
 [2 0 1 1]
 [0 0 1 1]]
[[ 0.          0.861037    0.          0.50854232]
 [ 0.90100815  0.          0.34261996  0.26607496]
 [ 0.          0.          0.78980693  0.61335554]]
  • 모든 문서에서 나타난 '한국'은 두 문서에서 나온 '미국'과 비교 했을때 frequency는 1로 같으나 idf를 고려하면 더 낮은 값을 확인할 수 있음
  • 각각 문서에서 frequency가 1인 '한국', '미국', '김치'는 idf를 고려하면 '한국'<'미국'<'김치'가 됨
  • 한 문장에서만 나온 '김치'와 'FTA'를 비교하면 빈도수가 높은 'FTA'가 더 높은 TF-IDF를 가지고 있는걸 확인할 수 있음
  • Text data의 numerical type의 input matrix 생성 완료!

워드 클라우드 TF v.s. TFIDF


In [12]:
from wordcloud import WordCloud

# 폰트 지정
wordcloud = WordCloud(font_path = r'C:\Windows\Fonts\Daum_SemiBold.ttf')

# 인코딩을 고려한 데이터 로딩
yonhap = pd.read_csv("한류_연합뉴스.csv", encoding = 'cp949')['contents']

In [13]:
# 계산 속도를 고려하여 200개만 사용

# TF bow 생성
kor_vectorizer = CountVectorizer(min_df=1)
kor_bow = kor_vectorizer.fit_transform(yonhap[:200])

# TF-IDF bow 생성
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(kor_bow.toarray())

TF기반 워드 클라우드


In [14]:
kor_corpus['contents'][20]


Out[14]:
'(부산=연합뉴스) 김상현 기자 = 아시아 대중음악 축제인 아시아송페스티벌이 10월 7일부터 9일까지 부산아시아드 경기장에서 열린다. 부산시는 10월 7일과 8일 부산아시아드 보조경기장에서 2016 아시아송페스티벌 전야행사를 하고, 10월 9일 부산아시아드 주경기장에서 본행사를 한다고 밝혔다. 2014년부터 시작한 아시아송페스티벌은 대중음악을 매개체로 아시아의 화합과 문화교류 활성화를 도모한다. 전체기사 본문배너 올해 축제는 대한민국을 대표하는 K팝 아티스트와 중국, 일본, 베트남, 싱가포르, 인도네시아, 필리핀 등 아시아 주요 국가들의 최정상급 아티스트가 대거 출연한다. 10월 9일 열리는 본행사에는 엑소, NCT 127, 세븐틴, 트와이스, AOMG 사이먼 도미닉 등이 참여를 확정해 아시아 한류팬들의 관심을 불러일으킬 것으로 기대된다. 행사를 주최하는 한국음악콘텐츠산업협회 최광호 사무국장은 "아시아송페스티벌 한국 대표를 선발하기 위해 공인 음악차트인 \'가온차트\'의 음원, 음반 판매량, 각종 SNS 등을 참고했다"며 "올해 행사에 출연하는 한국 대표는 각 부문 2016년 상반기 최고 가수라고 해도 과언이 아니다"라고 말했다. 해외 가수의 경우 해외 유명 레이블과 세계적인 음반사 등에서 신청한 가수 가운데 20여 명의 아티스트를 1차 후보군에 올려 최종 선발작업을 벌이고 있다. 올해 아시아송페스티벌은 부산시와 한국음악콘텐츠산업협회가 공동 주최하고 문화체육관광부가 후원한다. 엠넷에서 TV로 방영한다.'

In [15]:
# word_cloud 형태 데이터 타입으로 변환
word_tf = zip(kor_vectorizer.get_feature_names(),kor_bow.toarray()[20])

In [16]:
wordcloud.generate_from_frequencies(word_tf).to_image()


Out[16]:

TF-IDF기반 워드 클라우드


In [17]:
word_tfidf = zip(kor_vectorizer.get_feature_names(),tfidf.toarray()[20])

In [18]:
wordcloud.generate_from_frequencies(word_tfidf).to_image()


Out[18]:

연어(collocation) 예제


In [19]:
from konlpy.corpus import kolaw
from konlpy.utils import pprint
from nltk import collocations
from konlpy.tag import Kkma

measures = collocations.BigramAssocMeasures()
#doc = kolaw.open('constitution.txt').read()
doc = open('대통령_취임사.txt','r').read()
print('\nCollocations among tagged words:')

tagged_words = Kkma().pos(doc)
finder = collocations.BigramCollocationFinder.from_words(tagged_words)
pprint(finder.nbest(measures.pmi, 10)) # top 5 n-grams with highest PMI

print('\nCollocations among words:')
words = [w for w, t in tagged_words]
ignored_words = [u'안녕']
finder = collocations.BigramCollocationFinder.from_words(words)

finder.apply_word_filter(lambda w: len(w) < 2 or w in ignored_words)
finder.apply_freq_filter(3) # only bigrams that appear 3+ times
pprint(finder.nbest(measures.pmi, 10))

print('\nCollocations among tags:')
tags = [t for w, t in tagged_words]
finder = collocations.BigramCollocationFinder.from_words(tags)
pprint(finder.nbest(measures.pmi, 5))


Collocations among tagged words:
[(('21', 'NR'), ('세기', 'NNG')),
 (('5', 'NR'), ('천', 'NR')),
 (('·', 'SP'), ('무형', 'NNG')),
 (('각종', 'NNG'), ('불공정', 'NNG')),
 (('경축', 'NNG'), ('사절', 'NNG')),
 (('계와', 'MAG'), ('품앗이', 'NNG')),
 (('그리고', 'MAG'), ('이러하', 'VA')),
 (('근심', 'NNG'), ('없이', 'MAG')),
 (('글로', 'MAG'), ('벌', 'VV')),
 (('남북', 'NNG'), ('간', 'NNB'))]

Collocations among words:
[('과학', '기술'),
 ('문화', '융성'),
 ('경제', '부흥'),
 ('창조', '경제'),
 ('국가', '발전'),
 ('바라', 'ㅂ니다'),
 ('국민', '여러분'),
 ('국민', '여러'),
 ('행복', '시대'),
 ('우리', '대한민국')]

Collocations among tags:
[('XR', 'XSA'), ('NR', 'NNM'), ('JC', 'OL'), ('MAC', 'SS'), ('VXV', 'EPH')]

In [20]:
measures = collocations.TrigramAssocMeasures()
#doc = kolaw.open('constitution.txt').read()
doc = open('대통령_취임사.txt','r').read()
print('\nCollocations among tagged words:')

tagged_words = Kkma().pos(doc)
finder = collocations.TrigramCollocationFinder.from_words(tagged_words)
pprint(finder.nbest(measures.pmi, 10)) # top 5 n-grams with highest PMI

print('\nCollocations among words:')
words = [w for w, t in tagged_words]
ignored_words = [u'안녕']
finder = collocations.TrigramCollocationFinder.from_words(words)

finder.apply_word_filter(lambda w: len(w) < 2 or w in ignored_words)
finder.apply_freq_filter(3) # only bigrams that appear 3+ times
pprint(finder.nbest(measures.pmi, 10))

print('\nCollocations among tags:')
tags = [t for w, t in tagged_words]
finder = collocations.TrigramCollocationFinder.from_words(tags)
pprint(finder.nbest(measures.pmi, 5))


Collocations among tagged words:
[(('5', 'NR'), ('천', 'NR'), ('년', 'NNB')),
 (('년', 'NNB'), ('유', 'NNG'), ('·', 'SP')),
 (('드립', 'NNG'), ('니', 'VV'), ('다', 'ECS')),
 (('밤새', 'NNG'), ('불이', 'NNG'), ('꺼지', 'VV')),
 (('부탁', 'NNG'), ('드립', 'NNG'), ('니', 'VV')),
 (('여성', 'NNG'), ('이나', 'JC'), ('장애인', 'NNG')),
 (('영하', 'NNG'), ('수십', 'NR'), ('도', 'NNM')),
 (('유', 'NNG'), ('·', 'SP'), ('무형', 'NNG')),
 (('이나', 'JC'), ('장애인', 'NNG'), ('또는', 'MAG')),
 (('이상', 'NNG'), ('핵과', 'NNG'), ('미사일', 'NNG'))]

Collocations among words:
[('국민', '행복', '시대')]

Collocations among tags:
[('VXV', 'EPH', 'ETN'),
 ('XR', 'XSA', 'ETN'),
 ('SP', 'MAC', 'SS'),
 ('SS', 'SP', 'MAC'),
 ('ECS', 'VXV', 'EPH')]

문서비교 - 유사 문서 검색

  • 각각의 문서를 bag-of-words를 이용해 수치형 벡터로 표현하고 문서끼리 얼마나 가까운지 similarity를 계산하여 비교해보자

In [21]:
import re

total_news = []
stopword = ['것','수','저']

for news in yonhap[:1000]:
    pos_news = re.sub('.* 기자 = ', '', news) # 한 기자가 많은 기사를 작성. 기자명 때문에 유사한 것으로 계산될 수 있으니 이를 제거하자
    pos_news = ['/'.join(t[:-1]) for t in pos_tagger.pos(pos_news) if ((t[1]=='Noun') & (t[0] not in stopword))]
    total_news.append(' '.join(pos_news))

In [22]:
kor_vectorizer = CountVectorizer(min_df=10)
kor_bow = kor_vectorizer.fit_transform(total_news)

In [23]:
from sklearn.metrics.pairwise import cosine_similarity

cosine_similarity(kor_bow[0], kor_bow)


Out[23]:
array([[ 1.        ,  0.11375002,  0.05443311,  0.06488857,  0.15278266,
         0.10169504,  0.07067463,  0.17142067,  0.04170288,  0.09312404,
         0.10893319,  0.07647607,  0.05025189,  0.1030303 ,  0.05907646,
         0.10210625,  0.13245324,  0.22749346,  0.17622809,  0.06626221,
         0.0710478 ,  0.41344057,  0.12479613,  0.07873409,  0.07336607,
         0.09089031,  0.06081303,  0.12177236,  0.10302232,  0.11231009,
         0.06101546,  0.12175234,  0.04912836,  0.05634362,  0.06740802,
         0.09136021,  0.09740095,  0.13225059,  0.05994742,  0.0713624 ,
         0.13535101,  0.03823596,  0.08970628,  0.1069611 ,  0.1164848 ,
         0.17960051,  0.13149863,  0.11715032,  0.08504201,  0.10606602,
         0.07638263,  0.09117943,  0.12916591,  0.12520804,  0.07662204,
         0.10737427,  0.06344892,  0.20050049,  0.08568485,  0.09751896,
         0.0942809 ,  0.11769166,  0.10010242,  0.09052239,  0.08119979,
         0.11369851,  0.09547299,  0.15830396,  0.12867911,  0.27913773,
         0.10076115,  0.25716778,  0.05757532,  0.0984658 ,  0.13887748,
         0.09031251,  0.118139  ,  0.08315174,  0.09387731,  0.07105573,
         0.12196734,  0.09512604,  0.0541332 ,  0.09688639,  0.08882467,
         0.15655607,  0.04479546,  0.0705801 ,  0.05877835,  0.13231795,
         0.07071068,  0.255655  ,  0.08084521,  0.07196546,  0.13893541,
         0.08989331,  0.04618118,  0.21919865,  0.06506   ,  0.15431036,
         0.06748136,  0.09228381,  0.10108579,  0.03745555,  0.15457596,
         0.09439365,  0.0606788 ,  0.07698004,  0.11195857,  0.15031348,
         0.0641016 ,  0.10200173,  0.0860167 ,  0.0479133 ,  0.09857934,
         0.14544719,  0.07984379,  0.06001921,  0.05780347,  0.10631754,
         0.06024145,  0.05933255,  0.12656996,  0.10574968,  0.07529233,
         0.14376366,  0.08187388,  0.08702514,  0.13968606,  0.15940693,
         0.02496535,  0.04957081,  0.11622801,  0.0559017 ,  0.1470498 ,
         0.13316903,  0.13910414,  0.0965778 ,  0.0559017 ,  0.05964321,
         0.13069192,  0.10263533,  0.11370705,  0.06980898,  0.16434393,
         0.04841229,  0.05439611,  0.17622553,  0.07645529,  0.14967109,
         0.05149388,  0.05441072,  0.14757296,  0.0723536 ,  0.19499133,
         0.05333965,  0.11453883,  0.07005694,  0.04605372,  0.04673827,
         0.21387254,  0.20433447,  0.12157375,  0.11421712,  0.02967215,
         0.0875113 ,  0.05512655,  0.13554168,  0.1274118 ,  0.07218743,
         0.08123624,  0.09182012,  0.33154738,  0.03525754,  0.0093906 ,
         0.18919859,  0.05417996,  0.16308366,  0.16537965,  0.03979164,
         0.05170445,  0.16268129,  0.10672883,  0.0522233 ,  0.19030746,
         0.13473743,  0.11226828,  0.2549012 ,  0.06190476,  0.14847589,
         0.05819373,  0.04498841,  0.10173704,  0.06748136,  0.03502847,
         0.06569634,  0.32149521,  0.09657342,  0.06324555,  0.09848504,
         0.02594996,  0.18383959,  0.16465174,  0.21353075,  0.08981004,
         0.05297014,  0.02520656,  0.10459527,  0.1104863 ,  0.01836486,
         0.05406987,  0.11186444,  0.09803957,  0.13519595,  0.10039008,
         0.16815769,  0.09496164,  0.10212281,  0.17473687,  0.04490502,
         0.04274336,  0.05393962,  0.26924703,  0.10220373,  0.08129279,
         0.12717639,  0.12759026,  0.0877058 ,  0.2045983 ,  0.0320603 ,
         0.1440881 ,  0.06785471,  0.24255047,  0.11697193,  0.12813169,
         0.03191839,  0.13764944,  0.06910233,  0.05904099,  0.08999479,
         0.05828155,  0.09501815,  0.17733864,  0.24129569,  0.05252257,
         0.08564502,  0.03952847,  0.09152086,  0.06665035,  0.08169801,
         0.07508051,  0.01589104,  0.10324543,  0.09155838,  0.04380612,
         0.17239079,  0.09819416,  0.10015854,  0.08473957,  0.12909944,
         0.09878237,  0.22590165,  0.06476066,  0.07757911,  0.28314335,
         0.08190602,  0.08932468,  0.23372535,  0.20386371,  0.16783218,
         0.13071624,  0.23261478,  0.25260923,  0.18527434,  0.14273829,
         0.08649385,  0.08945751,  0.08819171,  0.05911058,  0.05691104,
         0.21280261,  0.07254763,  0.06865715,  0.20333986,  0.05818777,
         0.11046895,  0.12097168,  0.26631182,  0.08888889,  0.14091802,
         0.14283915,  0.13106215,  0.05223645,  0.09115235,  0.07689219,
         0.06356417,  0.0553053 ,  0.06646492,  0.03277478,  0.07559289,
         0.0637253 ,  0.06515584,  0.14329933,  0.06      ,  0.06216699,
         0.23328508,  0.16048217,  0.09408547,  0.12228357,  0.27254327,
         0.05129892,  0.0730595 ,  0.02993422,  0.03764616,  0.04236978,
         0.0384388 ,  0.03662948,  0.06780635,  0.07657148,  0.07457995,
         0.19206833,  0.05854094,  0.03535534,  0.07440698,  0.06577935,
         0.11203586,  0.08200699,  0.0458874 ,  0.04586806,  0.07979928,
         0.05897678,  0.10327956,  0.07615559,  0.13186147,  0.09762559,
         0.09704994,  0.14794328,  0.17184642,  0.09860133,  0.05333333,
         0.04850713,  0.04444444,  0.02161057,  0.15923514,  0.04771653,
         0.0364847 ,  0.14992353,  0.07874992,  0.03988054,  0.24208037,
         0.08308787,  0.02087414,  0.16002478,  0.02089053,  0.15357977,
         0.18132281,  0.14127213,  0.11642279,  0.07595545,  0.09663603,
         0.17946063,  0.07377111,  0.07190925,  0.20348923,  0.03478328,
         0.11752512,  0.0627703 ,  0.05376519,  0.042974  ,  0.24243252,
         0.04325803,  0.06310547,  0.08551861,  0.03984095,  0.06106612,
         0.12843226,  0.15504342,  0.12680852,  0.1332858 ,  0.17361846,
         0.10830734,  0.1279725 ,  0.19332722,  0.06166631,  0.09836808,
         0.08013877,  0.204524  ,  0.09882118,  0.14010092,  0.17785946,
         0.07204576,  0.06577748,  0.1249001 ,  0.28578289,  0.03806935,
         0.05259607,  0.07165456,  0.03267032,  0.03696824,  0.14023439,
         0.06024641,  0.05450043,  0.03243558,  0.10961339,  0.12809879,
         0.16939114,  0.06181151,  0.05168114,  0.13201201,  0.05632574,
         0.06887004,  0.06437165,  0.07998042,  0.06552045,  0.08368925,
         0.0994604 ,  0.30713549,  0.22192652,  0.07272905,  0.13836855,
         0.14167092,  0.10584755,  0.07392714,  0.06426916,  0.046642  ,
         0.10135352,  0.1783302 ,  0.2311203 ,  0.11425199,  0.09575376,
         0.10793407,  0.07505683,  0.0368738 ,  0.04901431,  0.06299408,
         0.05993202,  0.12081374,  0.04244962,  0.07603546,  0.04828671,
         0.31974059,  0.1279725 ,  0.06004658,  0.06280807,  0.12109984,
         0.07647191,  0.10532503,  0.17256712,  0.11501093,  0.02570589,
         0.03170213,  0.11470787,  0.08795643,  0.04168275,  0.11720181,
         0.12539548,  0.14487514,  0.19949579,  0.05229764,  0.0285133 ,
         0.16060106,  0.05484085,  0.02759277,  0.24913644,  0.04619349,
         0.05172606,  0.05727862,  0.05892557,  0.05623216,  0.09982546,
         0.09788002,  0.21516574,  0.15741581,  0.0942809 ,  0.06325601,
         0.16741127,  0.08548672,  0.1348068 ,  0.05963178,  0.08642716,
         0.13253205,  0.12249629,  0.1068206 ,  0.03609371,  0.04303315,
         0.09805154,  0.04896182,  0.24614427,  0.11734233,  0.15207092,
         0.1430136 ,  0.1677051 ,  0.18817816,  0.12654277,  0.04559904,
         0.13105265,  0.16396995,  0.21081851,  0.32713981,  0.06015039,
         0.05662747,  0.04945354,  0.10916576,  0.34207869,  0.01709964,
         0.04383973,  0.23046308,  0.05423261,  0.06330048,  0.03286711,
         0.10166673,  0.19264839,  0.13416408,  0.05405625,  0.05683286,
         0.16223619,  0.07636497,  0.071166  ,  0.01773056,  0.05312127,
         0.13065492,  0.07100107,  0.03328243,  0.12953194,  0.02712575,
         0.22969254,  0.09056795,  0.06923077,  0.04086742,  0.13344366,
         0.12325365,  0.05375082,  0.15006106,  0.05758058,  0.07011719,
         0.07991055,  0.12122064,  0.1141162 ,  0.05567849,  0.09390603,
         0.11674777,  0.10630329,  0.08841118,  0.08972494,  0.07473771,
         0.06623693,  0.02506903,  0.02916524,  0.10885366,  0.11989483,
         0.11998286,  0.205534  ,  0.29022716,  0.23488809,  0.19288546,
         0.1228303 ,  0.03402069,  0.02247333,  0.20303653,  0.05479351,
         0.16079397,  0.14156839,  0.06674912,  0.10886621,  0.07733603,
         0.06145271,  0.06638497,  0.17406131,  0.09465136,  0.06680289,
         0.04441424,  0.08040303,  0.12724867,  0.13345954,  0.05270463,
         0.06262243,  0.06599663,  0.12247449,  0.02591605,  0.06228411,
         0.05021624,  0.03859307,  0.17761741,  0.05439611,  0.16873352,
         0.20655981,  0.06360273,  0.21870166,  0.0521672 ,  0.07463085,
         0.01360828,  0.06629935,  0.02735942,  0.03913902,  0.24404677,
         0.06954143,  0.04482696,  0.06762352,  0.10151827,  0.07254763,
         0.08403621,  0.04303315,  0.06255432,  0.08498366,  0.41344538,
         0.04574957,  0.11785113,  0.09730323,  0.07287021,  0.06320606,
         0.13570331,  0.04140867,  0.08829191,  0.08436184,  0.13424844,
         0.08829642,  0.0742295 ,  0.17487713,  0.07076599,  0.08989331,
         0.07100107,  0.0745356 ,  0.07889411,  0.04366669,  0.13719216,
         0.01608224,  0.02276493,  0.02682595,  0.24951131,  0.19663032,
         0.08374793,  0.05967624,  0.07433195,  0.06403086,  0.16602164,
         0.04507489,  0.07227642,  0.03809459,  0.07492686,  0.1206994 ,
         0.11858541,  0.16320278,  0.20490029,  0.14776544,  0.06126789,
         0.12638407,  0.07681266,  0.02630739,  0.14073427,  0.0863458 ,
         0.11474249,  0.10263533,  0.07658486,  0.05333333,  0.08841857,
         0.10151827,  0.1073347 ,  0.11570643,  0.10623352,  0.05820252,
         0.02166147,  0.20219048,  0.05967624,  0.03432858,  0.03904738,
         0.22951012,  0.03409972,  0.0893334 ,  0.07166776,  0.08675346,
         0.10577261,  0.27227256,  0.05613051,  0.12677314,  0.08228813,
         0.19995869,  0.21128856,  0.17659436,  0.07903985,  0.05379144,
         0.24869046,  0.08265683,  0.21111111,  0.16334765,  0.10652473,
         0.28644595,  0.06256163,  0.19029974,  0.05080005,  0.08535792,
         0.09062318,  0.12797815,  0.1152468 ,  0.02394737,  0.07590334,
         0.04472136,  0.05874228,  0.05391639,  0.02833753,  0.05310442,
         0.04908204,  0.113567  ,  0.06378138,  0.12510865,  0.0701933 ,
         0.04256463,  0.06804138,  0.05483457,  0.16637906,  0.09290866,
         0.09074852,  0.14814815,  0.22739701,  0.20185371,  0.04426998,
         0.03758068,  0.05270463,  0.04288752,  0.07397164,  0.19188323,
         0.11006678,  0.05512655,  0.11750737,  0.26352314,  0.18750507,
         0.13508581,  0.12468738,  0.10013879,  0.03636965,  0.03042903,
         0.11654302,  0.09108401,  0.07956832,  0.24835869,  0.05879447,
         0.08647018,  0.12748655,  0.25405085,  0.12804555,  0.13034572,
         0.27457687,  0.11043153,  0.13820336,  0.06338657,  0.06079813,
         0.07114349,  0.12497418,  0.20792143,  0.09140619,  0.09805154,
         0.04270084,  0.06148873,  0.17866225,  0.21089555,  0.07779877,
         0.08282156,  0.04449942,  0.05764503,  0.1076144 ,  0.18278854,
         0.05000319,  0.08771218,  0.06015192,  0.14108524,  0.05337605,
         0.24287225,  0.12639408,  0.10468677,  0.24292698,  0.08268982,
         0.25719617,  0.09883324,  0.08367984,  0.1114708 ,  0.08834522,
         0.03654408,  0.04170658,  0.0438529 ,  0.14110916,  0.16798421,
         0.12909944,  0.08390608,  0.06279504,  0.08017837,  0.16815769,
         0.20234747,  0.07243006,  0.08333333,  0.15032568,  0.10238252,
         0.10169504,  0.07692772,  0.08556076,  0.03210289,  0.04707512,
         0.10931888,  0.03313111,  0.0723536 ,  0.14985022,  0.09604953,
         0.23839846,  0.12344754,  0.09988938,  0.09647146,  0.10932267,
         0.08119979,  0.22132115,  0.1222758 ,  0.06436974,  0.12623329,
         0.10063092,  0.1087585 ,  0.10504515,  0.0803738 ,  0.06274997,
         0.02629152,  0.09107064,  0.06281122,  0.05026355,  0.11149893,
         0.08660478,  0.        ,  0.11590011,  0.142682  ,  0.07114762,
         0.07678988,  0.1836422 ,  0.06512206,  0.07571317,  0.07666128,
         0.10327956,  0.06004658,  0.08252126,  0.09272133,  0.07438096,
         0.09563247,  0.11209327,  0.113801  ,  0.05845524,  0.09783211,
         0.11468373,  0.0218903 ,  0.0359187 ,  0.10249001,  0.13170678,
         0.14113936,  0.10419358,  0.11100357,  0.05659165,  0.21860378,
         0.20963346,  0.078427  ,  0.05929271,  0.06650199,  0.09488512,
         0.15883046,  0.08248359,  0.14437169,  0.06941248,  0.0727393 ,
         0.0695048 ,  0.106749  ,  0.0962963 ,  0.11935248,  0.14892154,
         0.062113  ,  0.1       ,  0.05948119,  0.12027088,  0.06553283,
         0.09761871,  0.15916487,  0.05371288,  0.13102319,  0.093527  ,
         0.11664941,  0.18712786,  0.28996565,  0.11676157,  0.07163426,
         0.1249001 ,  0.16518617,  0.1831671 ,  0.33457134,  0.16577863,
         0.05292377,  0.04292152,  0.17293508,  0.07035265,  0.12247449,
         0.14509525,  0.22719861,  0.10011357,  0.07367945,  0.04060213,
         0.28858038,  0.11425103,  0.06521865,  0.06839856,  0.10481673,
         0.11739345,  0.12660626,  0.06586503,  0.12078563,  0.12732499,
         0.12263904,  0.19307475,  0.16707378,  0.09378857,  0.12292726,
         0.04593746,  0.17629261,  0.15978196,  0.15252695,  0.0612697 ,
         0.0860167 ,  0.16737851,  0.25606554,  0.04908563,  0.11221399,
         0.0968719 ,  0.09145661,  0.08629131,  0.10025488,  0.0360888 ,
         0.10868154,  0.18631885,  0.05085736,  0.14274423,  0.05679618,
         0.08171352,  0.17155008,  0.11163126,  0.22768507,  0.07572824,
         0.08433739,  0.        ,  0.09886896,  0.18262289,  0.05249995,
         0.07243558,  0.10717718,  0.16193424,  0.08963902,  0.15494495,
         0.08195375,  0.15616249,  0.06497863,  0.08097763,  0.05814067,
         0.03384487,  0.16988601,  0.06851602,  0.06194296,  0.08304548,
         0.06255432,  0.0726425 ,  0.18164975,  0.18289088,  0.12613717,
         0.04958847,  0.07610494,  0.03525654,  0.12203882,  0.22050115,
         0.10989675,  0.09496522,  0.07827804,  0.1014301 ,  0.14054567,
         0.21725758,  0.1387084 ,  0.03795167,  0.17301142,  0.14171934,
         0.15255401,  0.06006655,  0.06327621,  0.09641354,  0.07076304,
         0.12276922,  0.12926687,  0.09098432,  0.11219364,  0.12747804,
         0.04469343,  0.10208201,  0.12903065,  0.06933752,  0.03982413,
         0.02784498,  0.09580824,  0.0532508 ,  0.07357197,  0.14502942,
         0.02873719,  0.04796356,  0.16758689,  0.03885187,  0.0627703 ]])

In [24]:
# 거리가 가까운 순서대로 정렬
idx = (-cosine_similarity(kor_bow[0], kor_bow)[0]).argsort()
print(idx)


[  0 604  21 503 883 172 498 196 440 416 552 877 895 685 393 264  69 740
 309 671 222 287 723 770  71 917  91 187 737 272 628 463 680 733 487 594
 768 765 232 369 349 243 800 553 267 305 271 427 506 525 665 933  17 712
 891 261 417 806 964  97 587 849 970 471 160 203 280 676 682 753 497 850
 747 585 551 642 228 386 161 268 363 283 558 785 661 713  57 675 457 629
 154 382 906 554 511 320 719 184 687 175 492 724 876 926 273 201 826 882
 958 759 938 957 355  45 360 752 426 389 582 242 677 911  18 147 617 218
 567 379 973 887 447 255 337 931   7 951 405 584 215 784 779 269 491 997
 475 916 907 708 634 884 178 881 202 144 496 683 641 177 181 515 942 560
 460 306 352 912 129 343 871 855  67 472  85 946 376 944 104  99 354   4
 975 913 489 788 109 532 346 798 149 864 189 711 336 643 152 134 115 890
 994 456 857 230 125 302 490 290 928 274 823 974 420 561 356 845 778 763
 289 648 969 399 388 128 136  94  74 971 419 742 236 624 610 167  40 213
 725 477 185 614 512 573 529 378 135 480  16  89  37 408 333 844  46 291
 495 873 270 140 520 739 523 981  52 259 780 987  68 375 234 404 738 691
 441 381 226 736 984 168 904 572 225 377 673 901 122 493 766 645 809 959
 455  53 703 746 392 880  22 726 801 530 909 555 980 905 481 889 577 308
 807 963  80  27  31 162 536 444 286 436 903 639 868 550 549 863 640  76
 606  61 365 722 900 488 454  47 233 878 540 875 730  44 357 132 822 657
 692 448 650 451 840 156 428 896 163 537 837   1 142  65 701  29 186 919
 983 836 325 108 211 932 819 773 847 208 285 741 720 965 403 804 795 502
  10 563 548 811 925 380 430 758  55 656 941  43 482 861 182 684 119 541
 658  49 421 670 123 446 812 899 767 207 846 830 331 252  13  28 141 651
 843 789 223 217  15 986 111 192   5 790 510 655 598 968 425 102  70 810
 214 923 257 727 892  62 866 802 469 415 937 771 387 260 338 114 199  73
 384 256 749 485 212 470 839 334 870  59  36 607 335  83 920 359 137 197
 803 978 862 799 991 429 835  66  81 241 966 216 854 568 105 473  60 307
 539  78 908 874   9 709 833 101 171 253 247 921 748  35  51 293 731 816
 982  25 710 690 526  63  75 239  95 619 204 543  42 943 276 667 266 288
  84 654 542 774 615 612 277 452 761 227 165 127 669 820 275 735 479 649
 922 915 112  58 245 792 372 476 689  48 603 258 613 935 600 781 630 414
 772 787  77 350 954 755 769 681 832 856 674 326 945 265 126 930 249 224
 170 805  64 948  92 571 813 783 385 412 535 116 329 732 678 622 347  23
 851 967 754 263 564 107 791 294 646 825 829  54 652 318  11 445 148  50
 516 332 961 438 358 694 934 828 299 124 250 431 638 544 589 319 621 323
 834 632 616 718 422 361 893 993  24 311 608 859 418 956 599 281 940 786
 153 797 636 169 390  93 362 668 396 879  39 517 824 745  79  20 521 620
 618 979  90   6  87 888 704 534 157 143 595 860 858 988 527 237 410 282
 952 898 706 231 317 597 100 193  34 569 562 248 853 297 566 591  19 545
 576 902 324 391 195 869 413 897 301 827  98 947   3 262 411 808 423 110
 633 702 300 586 295  56 743 508 977 474 198 609 371 434 817 443 782 999
 366 814 575 686 602 955 579 304 865 953 188 406 383 751 565 914 644 374
  30  26 744 106 400 120 762 499 976 442 831 117 303  38 435 662 631 139
 478 867 121 852 278  14 238 330 467 734  88 696 321 838 240 659 190 284
 949 118 757 533  72 466 279 514 929 500 848  33 409 468 672 138 133 538
 296 721 166 461 707 559 401   2 151 583 146 507 176  82 210 513 221 697
 679 367 531 872 764 155 339 653 992 519 699 205 885 574 716 395 244 939
 458 292 183 588 465 180 407 150 310 927 688 818  12 580 760 960 131 501
  32 918 700 433 486 340 145 439 996 113 344 794 159 424 464  96 158 910
 327 328 605 494 635 191 219 596  86 695 985 756 341 570 714 777 505 254
 623 370 484 601 368 886 717 220 750 705 437 314 776   8 453 611 528 894
 348 373 989 179 246 593 664 998 581 315  41 637 394 972 313 715 103 398
 432 316 775 345 728 483 924 842 322 173 962 194 364 663 666 556 950 522
 796 509 298 397 402 793 229 235 450 729 312 164 547 995 459 698 990 462
 592 524 627 647 815 200 578 449 206 546 130 693 626 557 841 660 342 353
 351 209 518 504 625 251 590 174 936 821]

tf에 대해


In [25]:
# idx에서 자기 자신을 뺀 두번째 index 즉 idx[1] 리턴! // 이전까지는 intuition
def find_most_similar_news(index, bow, corpus):
    idx = (-cosine_similarity(bow[index], bow)[0]).argsort()[1]
    return corpus[idx]

In [26]:
# idx=300인 문서에 대해 유사 문서 검색 결과 확인 
idx = 300

yonhap[idx]


Out[26]:
'(서울=연합뉴스) 곽명일 기자 = 북한당국이 주민을 상대로 자본주의 문화에 대한 단속과 통제를 강화하고 있지만, \'태양의 후예\'와 같은 한국 드라마를 몰래 시청하는 북한 주민들이 많다고 북한 전문매체인 데일리NK가 4일 보도했다. 평안남도 소식통은 이 매체에 "최근 젊은 청년들 속에서 \'태양의 후예\'라는 한국 드라마가 인기를 끌면서 날이 새는 줄도 모르고 시청하고 있다"면서 "이 드라마에 대한 소문이 퍼지자 어른·아이 할 것 없이 너도나도 (드라마를) 보기 위해 애쓰고 있는 상황"이라고 전했다. 소식통은 이어 "시장에서 상인들에게 다가가 \'아랫동네\'(한국)것이 없느냐\'고 슬쩍 말을 건네면 대뜸 \'태양의 후예\'를 소개한다"며 "새 드라마 원본(CD)은 5만 원(한국 돈 7천 원)에 판매되고, 복사본은 그 절반 값에 거래된다"고 설명했다. 전체기사 본문배너 그러면서 "(주민들은)\'200일 전투\'의 쌓인 피로를 한국 드라마를 시청하거나 가요를 감상하면서 해소한다"며 "한류의 확산으로 볼거리가 없는 조선중앙TV를 외면하는 주민이 늘어나고 있다"고 덧붙였다. 앞서 이 매체는 북한당국이 중국산 노트텔(EVD 플레이어)을 남한 드라마 시청의 주요 수단으로 지목하면서 수입을 전면 금지하는 지시를 내렸다고 지난달 23일 보도한 바 있다.'

In [27]:
find_most_similar_news(idx, kor_bow, yonhap) # Query를 제외하고 가장 유사한 문서, 북한이라는 키워드는 없다


Out[27]:
'(서울=연합뉴스) 조민정 기자 = "준, 앞을 봐야 하지 않아?" 운전하면서도 조수석에 앉은 자신을 쳐다보며 이야기를 이어가는 남자 주인공에게 타박이 날아든다. 박준이라는 이름의 이 남자 주인공은 재벌 2세. 회사를 물려받는 대신 레스토랑을 연 셰프다. 레스토랑의 여자 매니저는 그와 그의 재산을 탐내며 곁을 맴돌고 부주방장 서연은 그를 짝사랑한다. 전체기사 본문배너 한국 드라마에 빠진 한 백인 소녀가 가상의 세계 \'드라마월드\'에 떨어지면서 벌어지는 이야기를 담은 이 드라마는 곳곳에 한국 드라마의 전형적인 설정들을 재치있게 엮어냈다. 지난 1일부터 한국에서도 볼 수 있게 된 이 미국 드라마에서 \'김치싸대기\', 삼겹살과 소주, 욕심 많은 사모님, 노골적인 간접광고(PPL)까지 익숙한 장면들을 찾아보는 재미가 쏠쏠하다. ◇ "저 자동차 로고는 왜 가린 거야?" 주인공 박준(션 리처드 분)이 화가 났다는 것은 그가 상의 탈의를 하고 샤워기 아래서 뜨거운 물을 맞는 장면으로 드러나고, 차를 타고 가다가 화가 났을 땐 길 한가운데서 상대방에게 낮고 굵은 목소리로 "내려. 내리라고"라 한다. 준의 어머니는 아들이 회사를 이었으면 하는 바람으로 사사건건 간섭을 한다. 그런 그녀 옆에는 \'예비 며느리\'를 자처하는 여자가 있는데, 물론 악녀다. 여주인공 서연(배누리)은 설거지 담당부터 시작해 뛰어난 실력과 미모로 준의 마음을 사로잡아 그를 바로 옆에서 보조하게 됐다. 순수하고 남자를 일부러 꼬시는 일 따위는 할 줄 모른다. 준의 아버지가 운영하던 회사인 \'서리꽃\'의 제품들은 시도 때도 없이 등장해 클로즈업되는 반면, 준이 탄 자동차의 로고는 가려져 있다. 한국 드라마에 과도하게 등장하는 간접광고(PPL)에 대한 패러디다. 급기야 아침 드라마에서 등장해 한동안 화제가 됐던 \'김치 싸대기\' 장면도 \'깨알같이\' 패러디됐다. 누구나 \'뻔하다\'고 생각할만한 설정들을 보란 듯이 노골적으로 드러내 한국 드라마를 단 몇 번이라도 본 사람이라면 피식피식 웃음이 새어 나올 만하다. 한국 드라마를 잘 알고 있지만 이런 설정들에 의구심 또한 가지고 있던 클레어는 한국 드라마의 구태의연한 설정을 발견할 때마다 묻고, 또 말한다. "자동차 로고는 왜 가린 거야?" "어머니는 왜 오신 거야?" "운전할 땐 앞을 봐야지." 해외 한국 드라마 팬들의 가려운 곳을 시원하게 박박 긁어주는 대사들이다. ◇ 미드X한드의 오묘한 조합에 열광 \'드라마월드\'는 미국에 기반을 둔 글로벌 동영상 스트리밍 플랫폼 비키(www.viki.com)가 중국과 한국, 미국의 제작사와 손잡고 만든 웹드라마다. 비키가 한류 팬이 한국의 콘텐츠를 다양한 방법으로 소비하는 사이트라는 점에서 \'드라마월드\'는 한류 팬에 의한, 한류 팬을 위한 드라마다. 즐기다 못해 패러디 드라마까지 만든 셈이다. 비키로부터 한국 독점 방영권을 사들인 넷플릭스는 지난 1일부터 이 드라마를 공개했다. 지난 15일엔 VIP 시사회를 여는 등 홍보에 공을 들였다. 넷플릭스의 콘텐츠가 한국에서 생각보다 큰 반향을 얻지 못하는 상황에서 한국 드라마를 소재로 한 이 독특한 \'미국 드라마\'를 큰 기회로 여기는 듯하다. 다행히 인터넷 반응도 뜨겁다. 한국 드라마에 대한 재치있는 패러디에 B급 유머가 섞여들어 가면서 한국 시청자의 \'웃음 코드\'를 잡는 데도 성공했다. \'드라마월드\'를 추천한다는 글도 줄을 잇고 있다. 극 초반 몰입을 방해했던 한국어와 영어를 혼용하는(드라마 속 인물들은 통역 없이 다른 언어를 알아듣는다) 설정도 회를 거듭할수록 오히려 재미로 다가온다. 주인공 클레어 역을 맡은 호주 배우 리브 휴슨은 낯선 얼굴이지만, 다수의 한국 드라마에 출연한 션 리처드는 낯익은 인물이라 심리적 장벽을 낮췄다. 여기에 한지민, 최시원, 양동근 등 한국 스타들도 카메오 출연해 힘을 보탰다. 넷플릭스는 "본사 정책상 어떤 콘텐츠의 재생 수 등을 공개하지는 않는다"면서도 "다양한 경로로 드라마에 대한 호응을 느끼고 있다"고 전했다. ◇ 비키선 39개 언어로 번역돼…"시즌 2 논의" 비키는 한국을 비롯한 아시아의 드라마를 북미 시청자에게 공급하는 사이트다. 한국 드라마가 해외에서 어떻게 소비되고 있는지, 어떤 요소가 인기의 비결인지를 잘 알 수밖에 없다. 그런 만큼 비키는 한국 드라마 팬들의 취향을 정확히 짚어낸 작품을 만들어냈다. 한국에는 이달 1일에야 공개됐지만, 한국을 제외한 지역 시청자들은 이미 지난 4월부터 비키를 통해 이 드라마를 봤다. 자막도 39개 언어로 제작됐다. 비키는 영어 자막을 제공한 뒤 시청자가 직접 자신의 언어로 자막을 제작하도록 하는 만큼 자막 언어 수는 인기의 척도다. \'태양의 후예\'의 자막 언어 수가 37개임을 감안하면 \'드라마월드\'의 큰 인기를 짐작해볼 수 있다. 비키 관계자는 "구체적인 수치를 공개할 수는 없지만, 반응이 폭발적이다. 시즌 2 요구가 빗발치면서 실제로 논의가 진행 중"이라고 밝혔다. 이 관계자는 "한국 시청자와는 달리 해외 팬의 입장에서는 한국의 로맨틱코미디 드라마의 요소를 갖춘 데다 자신과 같은 처지의 클레어가 사랑을 이룸으로써 자신들의 꿈을 이뤄준 셈이라 굉장히 이입해서 드라마를 시청하고 있다"고 덧붙였다.'

tf-idf에 대해


In [28]:
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(kor_bow.toarray())

In [29]:
def find_most_similar_news_idf(index, tfidf, corpus):
    idx = (-cosine_similarity(tfidf[index], tfidf)[0]).argsort()[1]
    return corpus[idx]

In [30]:
find_most_similar_news_idf(idx, tfidf, yonhap)


Out[30]:
'(하노이=연합뉴스) 김문성 특파원 = 배정호 민주평화통일자문회의 사무처장은 27일 "북한의 전통적인 우방국이자 여전히 정치, 경제, 군사적 교류를 이어가는 베트남의 대북제재 이행은 북한의 태도변화에 큰 전환점이 될 수 있다"며 베트남의 적극적인 제재 동참을 촉구했다. 배 사무처장은 이날 베트남 하노이 롯데호텔에서 민주평통 주최로 열린 \'2016 한·베트남 평화통일포럼\'에서 기조연설을 통해 "유엔 제재가 빈틈없이 이행되도록 한국과 베트남이 적극적으로 협력하는 것이 무엇보다 필요하다"고 강조했다. 그는 "2014년 북한과 베트남이 500만 달러(57억 원)의 투자와 교역을 진행했고 베트남에 북한 식당도 운영되고 있다"며 북한의 돈줄을 죄고 비핵화를 이루는데 베트남의 협력을 요청했다. 전체기사 본문배너 강동완 동아대 교수는 \'한류가 북한사회에 미치는 영향\'이란 주제 발표에서 "최근 북한 내부에서 남한 영화나 드라마가 인기를 누리면서 한류 현상이 확산하고 있다"며 "이는 단순히 한류 전파라는 점 이외에 폐쇄된 북한 체제에 자본주의 요소인 시장을 확대하는 매개체"라고 평가했다. 강 교수는 "시장이 단순히 물물거래의 기능보다는 정보가 유통되고 북한사회의 폐쇄성을 상쇄하는 기능을 지니게 됐다"며 "남한 영상 매체의 확산은 북한에서 지역·계층 간 경계 허물기라는 사회적 현상의 변화를 초래하고 있다"고 말했다. 강 교수는 북한 주민의 남한 영상 매체 시청이 북한 체제 변화를 촉구하는 다른 요인과 상호 결합할 경우 북한사회 전체를 움직일 수 있을 기폭제가 될 것으로 전망했다. 딘 꽝 하이 베트남 역사연구소장은 베트남이 1975년 남북통일 이후 중앙에서 지방까지 집중적이고 일관된 정치, 문화, 사회, 경제 통합을 추진했다고 소개하며 전쟁 상흔 치료, 민족 화합과 화해, 미래를 위해 승자와 패자라는 이분법식 인식과 과거 상처에 얽매여서는 안 된다고 지적했다.'
  • tf-idf를 이용해 표현할 경우 문서의 유사도 계산이 효과적임

TF-IDF + cosine similiarity를 활용한 문서 군집화


In [31]:
from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters = 5)

In [32]:
kmeans.fit(tfidf)


Out[32]:
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
    n_clusters=5, n_init=10, n_jobs=1, precompute_distances='auto',
    random_state=None, tol=0.0001, verbose=0)

In [33]:
kmeans.labels_


Out[33]:
array([0, 2, 0, 2, 3, 3, 3, 0, 2, 1, 3, 0, 2, 3, 0, 3, 0, 0, 0, 1, 2, 0, 2,
       3, 3, 3, 3, 3, 3, 0, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3,
       0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 2, 2, 3, 3, 3, 3,
       3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 1, 2, 0, 3, 0, 3, 3, 0, 0,
       2, 0, 0, 2, 2, 0, 2, 3, 2, 3, 0, 1, 3, 0, 2, 2, 3, 0, 0, 0, 3, 1, 3,
       0, 3, 3, 2, 3, 2, 1, 0, 2, 1, 0, 4, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 1,
       0, 0, 0, 0, 2, 2, 0, 2, 1, 2, 2, 2, 0, 2, 0, 0, 0, 2, 1, 2, 0, 2, 0,
       0, 0, 2, 1, 1, 2, 2, 1, 2, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 2, 2,
       2, 1, 0, 0, 1, 0, 2, 1, 0, 2, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1,
       2, 0, 1, 2, 0, 0, 0, 2, 0, 4, 0, 0, 2, 2, 1, 0, 1, 1, 2, 0, 0, 0, 0,
       0, 2, 0, 2, 0, 2, 1, 3, 1, 2, 1, 0, 0, 3, 2, 2, 1, 0, 0, 0, 0, 2, 3,
       0, 0, 2, 0, 0, 2, 0, 2, 2, 0, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 1, 1, 2, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0, 2, 1, 1, 2, 2, 1,
       1, 1, 1, 0, 0, 1, 4, 4, 0, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 2, 0, 0, 2,
       0, 0, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0, 4, 0, 4, 1, 1, 0, 2, 0, 2,
       2, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 0, 2, 2,
       0, 0, 1, 2, 1, 1, 2, 2, 0, 1, 0, 2, 2, 0, 2, 0, 0, 1, 4, 1, 0, 0, 0,
       2, 0, 0, 2, 1, 0, 0, 2, 0, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 0, 2, 0,
       0, 0, 0, 0, 3, 2, 2, 0, 2, 1, 1, 0, 0, 0, 1, 3, 0, 0, 0, 2, 2, 2, 2,
       0, 2, 4, 0, 0, 1, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 2, 0, 1, 0, 3, 1, 1,
       0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 2, 0, 0, 1, 1, 0, 2, 0, 1, 2, 2, 0, 0,
       2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2,
       0, 1, 0, 1, 4, 2, 2, 2, 2, 0, 1, 0, 0, 4, 0, 2, 0, 3, 2, 0, 2, 0, 1,
       0, 0, 2, 0, 0, 1, 1, 0, 1, 2, 2, 2, 0, 0, 0, 2, 0, 1, 2, 0, 0, 0, 0,
       0, 0, 0, 2, 1, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 0, 0, 2, 2, 1, 0, 0, 1,
       1, 2, 0, 0, 2, 1, 1, 2, 1, 0, 4, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 1,
       2, 0, 0, 4, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 0, 1, 2, 2, 0, 2, 2, 2,
       1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 1, 0, 0, 2, 0,
       1, 4, 0, 2, 0, 1, 4, 0, 0, 4, 0, 0, 0, 0, 4, 2, 1, 0, 1, 1, 0, 0, 2,
       0, 1, 2, 1, 0, 0, 1, 0, 4, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1,
       2, 0, 4, 1, 0, 2, 1, 0, 2, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 2, 0, 0, 0,
       0, 2, 0, 0, 2, 1, 0, 0, 2, 2, 0, 4, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 2,
       0, 0, 0, 0, 0, 1, 0, 1, 2, 2, 1, 0, 0, 2, 1, 1, 1, 0, 0, 1, 1, 2, 0,
       0, 0, 0, 0, 4, 2, 0, 0, 2, 0, 0, 1, 2, 0, 0, 1, 1, 2, 2, 0, 2, 2, 2,
       2, 1, 4, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 2,
       0, 0, 0, 0, 4, 1, 4, 0, 2, 2, 1, 0, 2, 2, 0, 4, 0, 0, 0, 2, 2, 0, 4,
       1, 0, 2, 0, 2, 0, 0, 1, 2, 4, 0, 2, 0, 1, 1, 4, 4, 0, 4, 4, 4, 4, 4,
       1, 2, 1, 1, 0, 1, 0, 1, 2, 0, 2, 2, 1, 2, 2, 0, 2, 2, 2, 1, 0, 1, 0,
       0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 2, 2, 1, 2, 2, 1, 0, 4, 1, 0, 0, 2,
       1, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 0, 2, 4,
       2, 0, 1, 1, 1, 0, 0, 1, 0, 1, 2, 1, 0, 1, 2, 0, 0, 0, 0, 1, 1, 1, 0,
       2, 2, 1, 0, 2, 4, 4, 1, 0, 2, 2, 4, 4, 0, 4, 0, 0, 0, 1, 1, 0, 0, 0,
       4, 1, 2, 2, 0, 4, 1, 0, 0, 2, 1, 1, 2, 2, 3, 0, 0, 2, 3, 1, 3, 3, 0,
       1, 1, 3, 1, 2, 2, 1, 4, 4, 1, 0])

In [34]:
import numpy as np
clusters = []

for i in range(0, kmeans.n_clusters):
    clusters.append(np.where(kmeans.labels_ == i))

In [35]:
clusters


Out[35]:
[(array([  0,   2,   7,  11,  14,  16,  17,  18,  21,  29,  46,  49,  59,
          61,  71,  85,  87,  90,  91,  93,  94,  97, 102, 105, 109, 110,
         111, 115, 122, 125, 127, 128, 129, 130, 132, 136, 138, 139, 140,
         141, 144, 150, 152, 153, 154, 158, 160, 161, 162, 171, 172, 175,
         176, 177, 178, 181, 186, 187, 189, 192, 196, 198, 199, 200, 201,
         202, 203, 204, 208, 211, 212, 213, 215, 217, 218, 222, 226, 227,
         228, 229, 230, 232, 234, 241, 242, 247, 248, 249, 250, 253, 254,
         256, 257, 259, 262, 264, 265, 268, 269, 270, 271, 272, 273, 274,
         275, 276, 280, 282, 283, 285, 287, 288, 289, 290, 292, 302, 303,
         307, 309, 319, 320, 322, 323, 326, 329, 330, 331, 333, 334, 335,
         337, 341, 343, 346, 347, 349, 350, 351, 352, 354, 355, 356, 357,
         359, 360, 361, 363, 365, 368, 369, 376, 378, 381, 383, 384, 388,
         389, 390, 392, 393, 396, 397, 399, 401, 402, 407, 408, 409, 411,
         413, 414, 415, 416, 417, 421, 425, 426, 427, 430, 431, 432, 437,
         440, 441, 443, 444, 446, 447, 448, 452, 454, 456, 460, 463, 467,
         471, 472, 475, 477, 481, 482, 487, 488, 489, 490, 491, 492, 493,
         497, 498, 499, 500, 501, 503, 504, 506, 508, 515, 517, 518, 520,
         522, 525, 527, 529, 530, 532, 533, 536, 541, 542, 543, 545, 548,
         549, 550, 551, 552, 553, 554, 558, 560, 561, 566, 567, 568, 572,
         573, 577, 578, 584, 586, 587, 589, 590, 593, 594, 595, 596, 599,
         600, 603, 604, 605, 606, 608, 610, 611, 613, 617, 624, 628, 632,
         634, 640, 641, 643, 646, 648, 651, 652, 654, 655, 656, 657, 661,
         664, 665, 667, 671, 672, 674, 677, 679, 680, 681, 682, 683, 684,
         685, 687, 691, 694, 697, 703, 710, 711, 712, 713, 715, 716, 719,
         720, 723, 725, 726, 727, 730, 731, 732, 733, 736, 737, 738, 739,
         740, 742, 747, 748, 753, 754, 758, 759, 760, 761, 762, 765, 766,
         768, 769, 772, 773, 778, 785, 788, 790, 797, 798, 799, 800, 801,
         805, 806, 807, 808, 812, 816, 819, 821, 822, 823, 826, 829, 831,
         833, 834, 838, 840, 845, 855, 857, 860, 866, 871, 873, 874, 875,
         876, 877, 880, 881, 882, 883, 891, 894, 895, 899, 901, 903, 904,
         905, 906, 907, 908, 909, 917, 921, 925, 926, 928, 932, 935, 936,
         937, 938, 942, 946, 951, 956, 958, 959, 960, 963, 964, 965, 970,
         973, 974, 981, 982, 988, 999], dtype=int64),),
 (array([  9,  19,  83, 103, 113, 121, 124, 137, 146, 156, 164, 165, 168,
         170, 173, 174, 179, 180, 185, 188, 191, 194, 205, 206, 209, 221,
         223, 224, 236, 238, 240, 246, 263, 277, 278, 281, 284, 294, 295,
         298, 299, 300, 301, 304, 312, 313, 314, 315, 316, 317, 328, 332,
         339, 340, 353, 358, 370, 372, 373, 377, 385, 387, 395, 400, 423,
         424, 428, 442, 449, 450, 451, 455, 458, 459, 461, 462, 464, 465,
         466, 468, 473, 474, 478, 484, 485, 486, 494, 496, 507, 509, 516,
         528, 534, 535, 537, 546, 556, 557, 559, 562, 564, 565, 571, 574,
         575, 580, 581, 583, 591, 592, 597, 602, 607, 609, 614, 621, 622,
         623, 625, 626, 627, 639, 644, 649, 660, 662, 663, 668, 670, 673,
         686, 689, 693, 696, 700, 702, 704, 707, 718, 728, 734, 741, 743,
         746, 750, 751, 752, 755, 756, 770, 774, 775, 783, 796, 802, 803,
         810, 815, 828, 835, 841, 842, 851, 853, 854, 856, 858, 863, 870,
         872, 884, 887, 890, 893, 897, 898, 910, 911, 912, 913, 914, 915,
         922, 923, 924, 927, 929, 931, 933, 939, 940, 941, 945, 950, 961,
         962, 967, 972, 976, 977, 985, 989, 990, 992, 995, 998], dtype=int64),),
 (array([  1,   3,   8,  12,  20,  22,  32,  34,  41,  63,  64,  81,  84,
          92,  95,  96,  98, 100, 106, 107, 118, 120, 123, 131, 133, 134,
         135, 142, 143, 145, 147, 148, 149, 151, 155, 157, 159, 163, 166,
         167, 169, 182, 183, 184, 190, 193, 195, 197, 207, 210, 214, 219,
         220, 225, 231, 233, 235, 239, 244, 245, 251, 255, 258, 260, 261,
         266, 267, 279, 286, 291, 293, 296, 297, 308, 310, 311, 318, 321,
         324, 325, 327, 342, 344, 345, 348, 362, 364, 366, 367, 371, 374,
         375, 379, 380, 382, 391, 394, 398, 403, 404, 405, 406, 412, 419,
         420, 422, 433, 434, 435, 436, 438, 445, 453, 469, 470, 476, 479,
         480, 483, 495, 502, 505, 511, 512, 513, 514, 521, 524, 526, 531,
         538, 539, 540, 544, 547, 555, 563, 569, 570, 576, 579, 582, 588,
         598, 612, 615, 616, 618, 619, 620, 629, 630, 631, 633, 635, 636,
         637, 638, 642, 647, 659, 666, 669, 678, 688, 690, 695, 698, 699,
         701, 705, 706, 708, 709, 714, 717, 721, 722, 729, 735, 744, 745,
         749, 757, 764, 767, 771, 776, 777, 779, 780, 781, 782, 786, 787,
         789, 791, 792, 793, 794, 795, 804, 813, 814, 817, 818, 824, 825,
         830, 832, 836, 839, 852, 859, 861, 862, 864, 865, 867, 868, 869,
         878, 879, 885, 886, 888, 889, 896, 902, 918, 920, 930, 934, 943,
         944, 947, 952, 953, 968, 969, 975, 978, 979, 983, 993, 994], dtype=int64),),
 (array([  4,   5,   6,  10,  13,  15,  23,  24,  25,  26,  27,  28,  30,
          31,  33,  35,  36,  37,  38,  39,  40,  42,  43,  44,  45,  47,
          48,  50,  51,  52,  53,  54,  55,  56,  57,  58,  60,  62,  65,
          66,  67,  68,  69,  70,  72,  73,  74,  75,  76,  77,  78,  79,
          80,  82,  86,  88,  89,  99, 101, 104, 108, 112, 114, 116, 117,
         119, 237, 243, 252, 410, 418, 429, 457, 523, 916, 980, 984, 986,
         987, 991], dtype=int64),),
 (array([126, 216, 305, 306, 336, 338, 386, 439, 510, 519, 585, 601, 645,
         650, 653, 658, 675, 676, 692, 724, 763, 784, 809, 811, 820, 827,
         837, 843, 844, 846, 847, 848, 849, 850, 892, 900, 919, 948, 949,
         954, 955, 957, 966, 971, 996, 997], dtype=int64),)]

In [36]:
# 클러스터 몇 개를 살펴보자
print('1번 클러스터')
print(yonhap[9])
print(yonhap[19])
print(yonhap[783])


1번 클러스터
(서울=연합뉴스) 윤고은 기자 = 한류스타 이광수가 패션 브랜드 버커루의 광고모델로 발탁됐다고 소속사 킹콩엔터테인먼트가 9일 밝혔다. 버커루 측은 "아시아 전역에서 인기 있는 이광수가 버커루와 긍정적인 효과를 끌어낼 수 있을 것이라 여겼다"고 설명했다. 이어 "앞으로 이광수와 함께하는 다양한 프로모션으로 소비자들과 만날 예정"이라고 덧붙였다. 전체기사 본문배너 이광수는 KBS 2TV '마음의 소리'와 tvN '안투라지' 방송을 앞두고 있다.
(서울=연합뉴스) 정아란 기자 = 한류스타 박해진(33)이 데뷔 10년 만에 처음 만들어지는 공식 팬클럽 창단식을 사비로 진행할 계획이다. 소속사 마운틴 무브먼트는 8일 "박해진이 팬들을 사랑하는 마음에서 2천여 명이 참석하는 공식 팬클럽 '클럽진스'(CLUB Jin's) 창단식 비용 전액을 자신이 부담하기로 했다"고 알렸다. 박해진은 지난 4월 데뷔 10주년 기념 팬미팅도 무료로 진행한 바 있다. 전체기사 본문배너 '클럽진스' 창단식은 오는 9월 25일 서울 연세대 대강당에서 '팬들을 박해진의 집으로 초대합니다'는 제목으로 진행된다. 이 행사에는 한국뿐 아니라 중국, 일본, 인도네시아, 터키, 이란, 영국, 노르웨이, 멕시코, 오스트레일리아 등 27개국 팬들이 참석한다.
(서울=연합뉴스) 윤고은 기자 = 한류스타 박해진이 제이준 코스메틱의 광고모델이 됐다고 소속사 마운틴무브먼트가 7일 밝혔다. 제이준 코스메틱은 "박해진의 세련되고 깨끗한 이미지가 제품과 잘 맞아 모델로 발탁하게 됐다"며 "한국을 넘어 아시아 전역 팬들에게까지 사랑받는 박해진과의 협업 활동을 기대해달라"고 밝혔다. 박해진은 이날 오후 4시30분 명동 제이준 직영점에서 팬사인회를 진행한다. 전체기사 본문배너 한편, 박해진은 오는 28일 중국 베이징을 시작으로, 대만과 태국에서 잇따라 팬미팅을 연다. 
  • 한류스타 관련 클러스터

In [37]:
print('2번 클러스터')
print(yonhap[4])
print('\n')
print(yonhap[5])
print('\n')
print(yonhap[991])


2번 클러스터
(세종=연합뉴스) 김영만 기자 = 한국의 고고도 미사일 방어체계(THAAD·사드) 배치 결정 이후 중국 내 한류 위축 우려에 대해 문화체육관광부의 윤태용 문화콘텐츠산업실장은 9일 "중국이 우리에게 섭섭하게 하면 할 수 있도록 우리나라는 좋은 문화콘텐츠를 갖고 더욱 중국에 다가가야 한다"고 밝혔다. 윤 실장은 이날 연합뉴스와의 인터뷰에서 "중국에의 한류 진출 및 성공 여부는 문화 외적인 요소가 아닌 좋은 콘텐츠의 생산과 유통에 달려 있다"며 이같이 말했다. 그는 "한국의 창의성과 기술력, 중국의 자본과 시장이란 각각의 장점을 살려 한·중이 서로 협력하면 윈윈할 수 있을 것"이라며 "한국으로선 '우리는 항상 중국과 협력을 중시한다'는 메시지를 중국 측에 심어주는 게 중요하다"고 강조했다. 전체기사 본문배너 그러면서 "두 나라는 외부 요인으로 약간의 오해와 잠깐의 불편함이 발생하더라도 문화 경제적인 측면에서 긴 안목을 갖고 미래지향적인 시각을 견지해야 할 것"이라고 강조했다. 한국과 중국 언론에 '중국의 한류 제동' 관련 보도가 반복 재생산되는 것에 대해 그는 "실제보다 과한 측면이 적지않아 한·중의 문화예술 교류 신뢰가 깨지는 것처럼 비쳐 많은 국민과 업계가 우려하고 있다"고 지적했다. 그는 또 "최근 사드 여파로 양국간 서먹한 분위기 속에서 극히 일부 한류 행사 일정이 조금 미뤄질 수는 있겠지만, 대부분 취소되지 않고 정상적으로 진행되는 것으로 알고 있다"며 "며 "국내 언론끼리 또는 한국과 중국 언론이 '주고받기식'으로 취재 경쟁을 벌이는 건 양국 발전에 아무런 도움이 안 된다"고 덧붙였다. 아울러 윤 실장은 "문화예술 분야의 공공 부문이 선도적으로 나서 중국 측과 적극적으로 협력함으로써 사드 여파로 위축된 민간 부문의 대중(對中) 한류 활성화를 돕는 것도 필요하다"고 말했다.


(서울=연합뉴스) 구정모 기자 = 사드(THAAD·고고도 미사일 방어체계) 배치 결정 이후 중국이 한류 확산에 제동을 걸고 나선 것이 아니냐는 우려가 이는 가운데 아직 영화 분야에서는 '수상한' 흐름이 감지되고 있지 않은 것으로 나타났다. 대부분 합작 형태로 중국 감독이 연출하고 중국 배우가 출연하는 영화를 제작 중이어서 직접적인 제재권에서 벗어나 있는 환경이긴 하지만 반한류 움직임이 어느 정도의 강도로, 얼마나 이어질지 예상할 수 없다는 점에서 우리 영화업계는 중국 내 상황변화에 촉각을 곤두세우고 있다. 9일 영화업계에 따르면 국내 주요 배급업체 중 중국에 가장 먼저 진출한 CJ E&M은 중국과의 공동제작 활동을 왕성히 벌이고 있다. 전체기사 본문배너 김진아 감독이 연출하고 배우 양자경이 주연을 맡은 '파이널 레시피'가 이달 말 개봉을 앞두고 있고, '베테랑'과 '장수상회' 등 국내 영화의 리메이크 작품도 중국 측과 공동제작 방식으로 진행되고 있다. 앞서 CJ E&M은 국내에서 흥행을 거둔 영화를 중국 정서에 맞게 리메이크하는 전략으로 재미를 톡톡히 본 바 있다. '수상한 그녀'를 중국판으로 리메이크한 '20세여, 다시 한 번'이 지난해 1월 중국에서 개봉해 관객 1천162만명을 끌어모아 3억6천500만 위안(약 640억원)의 흥행 수익을 올렸다. CJ E&M 관계자는 "중국에서 공식적이고 가시적인 조치가 나온 상황이 아니어서 대비책을 세우기에 모호한 측면이 있다"며 "중국 상황을 예의주시하면서 프로젝트를 진행하고 있다"고 말했다. 쇼박스는 지난해 중국 현지법인 '쇼박스차이나'를 설립하고서 중국 제작사인 화이브라더스와 함께 3년간 한중합작영화 6편 이상을 제작하기로 했다. 쇼박스가 국내의 영화산업을 바탕으로 프로젝트를 선별하면 쇼박스차이나에서 중국 현지화 기획개발을 주도한다. 이후 완성된 시나리오로 쇼박스와 화이브라더스가 투자 결정을 내리고, 공동 제작된 영화는 화이브라더스가 중국 내 마케팅과 배급을 담당한다. 양측의 이런 공동제작의 첫 결실인 '뷰티풀 액시던트'(美好的意外·미호적의외)가 하반기 개봉할 예정이다. 쇼박스 관계자는 "우리가 만드는 영화는 감독과 배우, 제작 모두 중국인이다"며 "겉의 만듦새가 100% 중국이라서 사드의 영향을 받지 않을 것"이라고 예상했다. 쇼박스 측은 화이 측과 2번째 작품도 차질없이 진행 중이라고 덧붙였다. 지난해 중국 드라마제작사 화책미디어와 손잡고 합자회사 '화책합신'을 설립한 뉴(NEW)는 강풀의 만화 '마녀'를 원작으로 한국과 중국 현지의 정서에 맞게 각각 영화화를 추진하고 있다. 한국에서는 '인간중독'의 김대우 감독이, 중국에서는 '20세여 다시 한 번'의 천정다오(陳正道) 감독이 각 영화의 연출을 맡았다. 뉴는 또한 우리 영화 '뷰티 인사이드'(2014)의 중국판 리메이크도 추진 중이다. 뉴 관계자는 "화책합신이 중국에 근간을 두고 있어 중국 현지 프로젝트와 다름없다"면서도 "하지만 반한류 움직임이 어떤 방향으로 전개될지 몰라 상황을 지켜보고 있다"고 말했다.


(베이징=연합뉴스) 홍제성 특파원 = 중국 정부가 스타 연예인과 그 미성년 자녀가 함께 출연하는 예능 프로그램의 제작과 방영을 불허키로 했다고 관영 신화통신이 17일 보도했다. 이에 따라 한국의 방송프로그램 포맷을 차용한 중국판 '아빠 어디가'와 중국판 '슈퍼맨이 돌아왔다'와 같은 프로그램은 중국 방송에서 퇴출 수순을 밟게 됐다. 중국 국가신문출판광전총국(광전총국)은 최근 '방송 프로그램의 관리 강화에 관한 통지문'을 통해 미성년자의 리얼리티쇼 출연을 엄격히 통제할 것이라고 밝히면서 연예인 자녀가 출연하는 프로그램의 제작과 방영을 원칙적으로 불허키로 했다. 전체기사 본문배너 통지문은 리얼리티 쇼와 오락 프로그램을 통해 스타를 과대 포장하고 이들 자녀까지 벼락스타로 만드는 것을 엄격히 차단할 것이라고 경고했다. 통신은 이미 상당수 TV 방송사들이 관련 프로그램 조정에 들어갔다고 전했다. 이에 따라 MBC의 '아빠 어디가'의 중국판인 '아빠 어디가'(바바취나얼)와 KBS의 '슈퍼맨이 돌아왔다'의 중국판인 '아빠가 돌아왔다'와 같은 스타와 자녀가 동반 출연하는 리얼리티 쇼는 중국 TV에서는 더 이상 방송할 수 없게 됐다. 통계에 따르면 지난해 중국 전역의 위성TV에는 100여 개의 버라이어티 쇼가 방송됐으며 이 프로그램이 차지하는 광고시장은 100억 위안(약 1조7천600억원) 규모를 넘고 있다. 이 중 상당수 프로그램이 스타의 자녀 등 미성년자가 출연하는 프로그램인 것으로 알려졌다. 광전총국은 지난해 7월에도 관련 통지문을 통해 출연자들에 대한 과도한 스타 만들기를 자제할 것과 미성년자의 예능 프로그램 출연을 최대한 줄일 것을 지시한 바 있다. 중국 당국의 이같은 움직임은 한국의 방송 프로그램 포맷 수출을 통한 한류(韓流) 확대에 악영향을 끼칠 것으로 예상된다. 일각에서는 이런 점을 들어 중국 당국이 한류를 견제하려는 의도에서 이같은 조치를 취한 것 아니겠느냐는 관측도 나오고 있다. 중국 인터넷에서는 폭발적인 인기를 끈 드라마 '태양의 후예'와 관련, 자국 미디어에 '태양의 후예'를 지나치게 띄우지 말라는 지시를 내렸다는 내용의 글도 확산된 바 있다.
  • 중국 관련 이슈 클러스터